// ./swagger/index.js
var path = require("path");
var express = require("express");
var swaggerUi = require("swagger-ui-express");
var swaggerJSDoc = require("swagger-jsdoc");
var users = require("./users");
var movies = require("./movies");
var order = require("./order");
var cinemas = require("./cinemas")
var schedules = require("./schedules");
// 他就是 swagger 的配置信息
const options = {
  definition: {
    // 采用的 openapi 版本
    openapi: "3.0.0",
    // 页面基本信息
    info: {
      title: "学生管理系统", // 设置 swagger 的标题。（项目名称）
      version: "1.0.0", //设置版本
    },
    // 配置功能模块
    tags: [
      users.tags,
      movies.tags,
      cinemas.tags,
      order.tags,
      schedules.tags,
    ],
    components: {
      securitySchemes: {
        oauth2: {
          type: "oauth2",
          flows: {
            authorizationCode: {
              authorizationUrl: "/oauth/dialog",
              tokenUrl: "/oauth/token",
            },
          }
        }
      },
            //用来描述数据结构 
            schemas: {
                // ...users.schemas,
                ...movies.schemas,
                ...cinemas.schemas,
                ...order.schemas,
                ...schedules.schemas,

            }
        },
        // 配置接口
        paths: {
            // 接口url接口路径
            // ...users.paths,
            ...movies.paths,
            ...cinemas.paths,
            ...order.paths,
            ...schedules.schemas,
        }
    },
    // 去指定项⽬路径下收集 swagger 注释，⽤于⽣成 swagger ⽂档。
    apis: [path.join(__dirname, "../routes/**/*.js")]
};
var swaggerJson = function (req, res) {
    res.setHeader("Content-Type", "application/json");
    res.send(swaggerSpec);
};
const swaggerSpec = swaggerJSDoc(options);
var swaggerInstall = function (app) {
    if (!app) {
        app = express();
    }
    // 根据配置⾃动⽣成 swagger.json ⽂件
    app.get("/swagger.json", swaggerJson);
    // 使⽤ swaggerSpec ⽣成 swagger ⽂档⻚⾯，并开放在指定路由
    app.use("/swagger", swaggerUi.serve, swaggerUi.setup(swaggerSpec));
};
module.exports = swaggerInstall;